﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//#include<string.h>
//void Test(void)
//{
//	char* str = (char*)malloc(100);
//	strcpy(str, "hello");//这里的str拷贝了一份hello 的地址，
//	free(str);//提前释放这块空间不属于str了
//	str = NULL;
//	if (str != NULL) // ok
//	{
//		strcpy(str, "world");// 打印出来hello和world越界访问 ，
//		printf(str);
//	}
//}
//int  main()
//{
//
//	Test();
//	return 0;
//}



//
//struct arr
//{
//	int a;
//	char c;
//	int arr[];//没有定义大小的成员叫柔性数组成员
//};
//int main()
//{
//	 struct arr* S= (struct arr *) malloc(sizeof(struct arr) + 20 * sizeof(int));
//	 if (S == NULL)
//	 {
//		 perror("malloc()");
//		 return 1;
//	 }
//	 //使用空间
//	 S->a = 100;
//	 int i = 0;
//	 for(i = 0; i < 20; i++)
//	 {
//		 S->arr[i] = i + 1;
//	 }
//	 //调整空间大小
//	 struct arr*ptr =(struct arr *)  realloc(S, sizeof(struct arr) + 40 * sizeof(int));
//	 if (ptr != NULL)
//	 {
//		 S = ptr;
//		 ptr = NULL;
//	 }
//	 else
//	 {
//		 return 0;
//	 }
//	 for (i = 0; i < 40; i++)
//	 {
//		 printf("%d ", S->arr[i]);
//	 }
//	 free(S);
//	 S = NULL;
//	return 0;
//   }

//#include <stdio.h>
//int main()
//{
//	int a = 10000;
//	FILE* pf = fopen("test.txt", "wb");
//	fwrite(&a, 4, 1, pf);//⼆进制的形式写到⽂件中
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}



//打开文件成功返回有效的指针，
//如果失败了，就会发返回NULL
//int main()// 打开文件
//{
//	//FILE* f = fopen("C:\\Users\\L\\Desktop\\data.txt", "w");
//	FILE* f = fopen(".\\data.txt", "w");//  .  表示当前路径   .. 表示上一级路径
//	//相对路径
//	if (f == NULL)
//	{
//		perror("fopen");
//
//	}
//	//写文件
//
//
//	//关闭文件
//	fclose(f);
//	f = NULL;
//
//	return 0;
//}

//int main()
//{
//	//打开文件
//	FILE* f = fopen("data.txt", "w");
//
//	if (f == NULL)
//	{
//		perror("fopen");
//
//	}
//	int i = 0;
//	for (i = 'a'; i <= 'z'; i++)
//	{
//		fputc(i,f);
////
////	}
//	
//	//写文件
//
////关闭文件
//	fclose(f);
//	f = NULL;
//	return 0;
//}
//int main()
//{
//	//打开文件
//	FILE* f = fopen("data.txt", "r");
//
//	if (f == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件
//	/*int ch = fgetc(f);
//	printf("%c\n", ch);
//	ch = fgetc(f);
//	printf("%c\n",ch); 
//	ch = fgetc(f);
//	printf("%c\n", ch);
//	ch = fgetc(f);
//	printf("%c\n", ch);*/
//	int ch = 0;
//	while ((ch = fgetc(f)) != EOF)
//	{
//		printf("%c ", ch);
//	}
//
//	//写文件
//
////关闭文件
//	fclose(f);
//	f = NULL;
//	return 0;
//}
int main()
{
	//打开文件
	FILE* f = fopen("data.txt", "r");

	if (f == NULL)
	{
		perror("fopen");
		return 1;
	}
	//读文件

	int ch = 0;
	while ((ch = fgetc(f)) != EOF)
	{
		printf("%c ", ch);
	}

	//写文件

//关闭文件
	fclose(f);
	f = NULL;
	return 0;
}


